package Utils;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;

public abstract class UtilLeitorDeArquivos {
    final static Charset ENCODING = StandardCharsets.UTF_8;
    
    private static String pattern = ";";
   
    public static List<String> lerDados(String nomeArquivo) throws IOException{
        List<String> linhas = UtilLeitorDeArquivos.readSmallTextFile(nomeArquivo);
        return linhas;
    }
    
    public static List<String[]> filtra(List<String> linhas, String pattern){
        String[] split = null;
        List<String[]> listaItensFiltrados = new ArrayList<String[]>();
        for(String linha : linhas){
           split = linha.trim().split(pattern);
           listaItensFiltrados.add(split);
       }
       return listaItensFiltrados;
    }

    public static List<String[]> configuraDadosDoArquivo(String nomeArquivo) throws IOException{
        List<String> lerDados = UtilLeitorDeArquivos.lerDados(nomeArquivo);
        List<String[]> dadosFiltadros = UtilLeitorDeArquivos.filtra(lerDados, pattern);
        return dadosFiltadros;
	}
    
    public static void atualizaBD(List<String[]> dadosFiltadros, String txtBD) throws IOException{		 
		File file = new File(txtBD);
		FileWriter fw = new FileWriter(file.getAbsoluteFile());
		BufferedWriter bw = new BufferedWriter(fw);
		int novaLinha = 1;
		for(String[] strs : dadosFiltadros){
			for(String str : strs){
				if(novaLinha == strs.length){
					str = str+System.getProperty("line.separator");
				}else{
					str = str+";";
				}
				bw.write(str);
				novaLinha++;
			}
			novaLinha = 1;
		}
		bw.close();
	}
           
    public static List<String> readSmallTextFile(String aFileName) throws IOException {
        Path path = Paths.get(aFileName);
        return Files.readAllLines(path, ENCODING);
    }

}
